Modern network hardware uses various schemes for moderating or coalescing interrupts in order to improve performance (e.g., throughput or Central Processing Unit (CPU) utilization). Many of these schemes are not versatile enough to handle different hardware platforms (i.e., computer systems) or different network profiles, due to the large number of unbound algorithmic parameters that may be tuned per hardware platform or per configuration. That is, conventional schemes are not generic enough.
Different hardware platforms may be described as computer systems with different latencies, due to memory, CPU, and other hardware and operating system factors. For example, an Intel® Pentium® 4 hardware platform has different latencies than an Intel® Pentium® 3 hardware platform. A network profile may be described as a set of characteristics of a network, including line utilization, link speed, direction of traffic (e.g., transmit, receive or mixed (i.e., both receive and transmit)), average packet size, and burstness (i.e., amount of data sent or received over time).
An interrupt throttling rate (ITR) scheme may be described as a technique to delay an interrupt event using a settable timer. That is, the interrupt is issued when the timer reaches a set value. When practicing the ITR scheme, it is difficult to find an appropriate throttling rate for various combinations of hardware platforms and network profiles. A throttling rate may be described as the rate at which interrupts are issued. In conventional systems, there is no algorithmic way to find an optimal ITR value for a combination of a particular hardware platform and network profile.
The ITR scheme may be impacted by the hardware platform. For example, once an interrupt is fired, the latency of servicing the interrupt causes a deviation from the original planned time. Latency, in this case, refers to the amount of time it takes for a packet of data to get from the hardware receive queue to the target application that uses the packet of data. This deviation changes from one hardware platform to another. Furthermore, the latency changes in the same hardware platform as the network profile changes since the hardware platform goes through different levels of workload.
With reference to the network profile, the network profile affects, by itself, the packet handling latency. When trying to optimize the performance of a hardware platform, each network profile for that hardware platform requires a different throttling rate, where each throttling rate behaves differently on a different hardware platform. Thus, it is not effective to treat all network profiles as the same and associate a static ITR value for each network profile and hardware platform combination.
An example of a problematic network profile is a case in which a small packet test (in a Gigabit network) yields packets in rates of up to of 1.4 million packets per second (PPS). A long latency causes the internal buffers of the hardware to overflow, since an interrupt service routine may be scheduled too late. A short latency probably services the packets, but a very fast machine with a very short response time ends up with too many interrupts. There should be a tradeoff among the two, but conventional systems do not provide a reasonable approximation.
The ITR scheme is used today, but there is no technique to match the interrupt throttling rate for every hardware platform and network profile. The current state is that products on the market either impose the tuning responsibility on the user or system administrator or use static values that are not appropriate for all scenarios.
Polling may be described as a technique in which interrupts are issued at specific (e.g., scheduled) time intervals. The use of a settable timer in an ITR schema in a given platform and network profile may be imitated by using a polling timer, since the average rate of the interrupts is anticipated and may be handled in a given time delay.
Therefore, there is a need in the art for an improved technique for optimizing an interrupt-latency or polling rate value for use with a hardware platform and network profile combination.